#ifndef ARCHIVOIDTERMINOS_H_
#define ARCHIVOIDTERMINOS_H_

#include "indexes/ArbolBMas.h"
#include "indexes/Registro.h"
#include <string>

#ifndef ID_TERMINO
#define ID_TERMINO "idTermino"
#endif

#ifndef OFFSET
#define OFFSET "offset"
#endif

/*
 * Clase que define la clave del indice
 */
class ClaveIdTermino : public Registro
{
public:
	ClaveIdTermino(const long idTerm=0)
	{
		(*this)[ID_TERMINO] = idTerm;
	}
	long getIdTermino(){return *((long*) ((*this)[ID_TERMINO].getValor()));}
};

/*
 * Clase que define el dato
 */
class DatoOffset : public Registro
{
	
public:
	
	DatoOffset(const long num=1)
	{
		(*this)[OFFSET] = (long) num;
	}
	long getOffset(){return *((long*) ((*this)[OFFSET].getValor()));}
	void setOffset(long f){(*this)[OFFSET]=f;}
};


class archivoIdTerminos
{
private:
	ArbolBMas<ClaveIdTermino,DatoOffset> indice;
	fstream listaTerminos;
	long cantTerminos;	
public:
	archivoIdTerminos(string ruta);
	int agregarTermino(long idTerm, string& term);
	string obtenerTermino(long idTerm);
	~archivoIdTerminos();
};

#endif /*ARCHIVOIDTERMINOS_H_*/
